home *** CD-ROM | disk | FTP | other *** search
- REPTDOCS PROGRAM
- REPTFILPATH STRING('\RRDOC\RPTSFILE.DAT')
- DTBSFILPATH STRING('\RRDOC\DTBSFILE.DAT')
- REPPATH STRING(60)
- DBSPATH STRING(60)
- DOSFILPATH STRING(60)
- TBLRECS LONG
- COUNTER LONG
- RECS LONG ! RECORDS() IN FILE
- REPT_TITLE STRING(32)
- DTBS_TITLE STRING(32)
-
- NOPATH EQUATE('PATH NOT FOUND')
- BAD_ACCESS EQUATE('INVALID ACCESS CODE')
- BAD_DRIVE EQUATE('INVALID DRIVE')
- CANT_DELETE EQUATE('CANNOT DELETE CURRENT DIRECTORY')
- NO_FILES EQUATE('NO MORE FILES')
- OPN_FILES EQUATE('TOO MANY OPEN FILES')
-
- DIRGRP GROUP,PRE(GRP)
- DIRREC GROUP
- BYTE,DIM(21) !USED BY NEXTDIR
- ATTRIB BYTE !FILE ATTRIBUTE IN DOS FORMAT
- TIME SHORT !FILE TIME IN DOS FORMAT
- DATE SHORT !FILE DATE IN DOS FORMAT
- FILESIZE LONG !FILE SIZE IN BYTES
- NAME STRING(13) !FILENAME
- PORS STRING(9) !PREVIOUS OR SUBDIRECTORY
- . .
- DIRTBL TABLE,PRE(TBL)
- DIRREC GROUP
- BYTE,DIM(21) !USED BY NEXTDIR
- ATTRIB BYTE !FILE ATTRIBUTE IN DOS FORMAT
- TIME SHORT !FILE TIME IN DOS FORMAT
- DATE SHORT !FILE DATE IN DOS FORMAT
- FILESIZE LONG !FILE SIZE IN BYTES
- NAME STRING(10) !FILENAME
- EXT STRING(3) !FILE EXTENSION
- PORS STRING(9) !PREVIOUS OR SUBDIRECTORY
- . .
-
- SORTTBL TABLE,PRE(SRT) !SORT TABLE
- TBLREC BYTE ! TABLE RECORD
- SORTSTR STRING(30) ! SORT STRING
- .
-
- INCLUDE('STD_KEYS.CLA')
- INCLUDE('CTL_KEYS.CLA')
- INCLUDE('ALT_KEYS.CLA')
- INCLUDE('SHF_KEYS.CLA')
- MAP
- PROC(G_RUNPROC)
- MODULE('DOS1'),BINARY !DOS LANGUAGE EXTENSION
- PROC(SPOOL) ! SPOOL DISK FILE TO PRINTER
- PROC(SETDIR) ! SET FOR DIRECTORY PROCESSING
- PROC(NEXTDIR) ! GET NEXT DIRECTORY ENTRY
- PROC(REMOVEDIR) ! REMOVE (DELETE) DIRECTORY
- PROC(MAKEDIR) ! MAKE NEW DIRECTORY
- PROC(GODOS) ! GO TO DOS PROMPT
- PROC(BOOT) ! SOFTWARE BOOT
- FUNC(COMMAND_LINE),STRING ! RETURN COMMAND LINE
- FUNC(ENVIRONMENT),STRING ! RETURN ENVIRONMENT VARIABLE
- .
- .
-
- REJECT_KEY EQUATE(CTRL_ESC)
- ACCEPT_KEY EQUATE(CTRL_ENTER)
- TRUE EQUATE(1)
- FALSE EQUATE(0)
-
- DOSFILE DOS,NAME(DOSFILPATH),PRE(DFL)
- RECORD
- DOS_STRING STRING(150)
- ..
-
- REPTFILE FILE,NAME(REPTFILPATH),PRE(RPT),CREATE
- RPKEY KEY(RPT:REPT_TITLE),DUP
- RECORD
- REPT_TITLE STRING(32)
- DTBS_TITLE STRING(32)
- DOS_NAME STRING(14)
- ..
-
-
- DTBSFILE FILE,NAME(DTBSFILPATH),PRE(DBS),CREATE
- DBKEY KEY(DBS:DTBS_TITLE),DUP
- RECORD
- DTBS_TITLE STRING(32)
- DOS_NAME STRING(14)
- ..
-
-
- SCREEN screen pre(SCN),hue(7,0)
- row(1,1) string('╔═{78}╗')
- row(2,1) repeat(15);string('║<0{78}>║') .
- row(17,1) string('╠═{78}╣')
- row(18,1) repeat(7);string('║<0{78}>║') .
- row(25,1) string('╚═{18}<0{13}>═{12}<0{18}>═{17}╝')
- row(2,24) string('Report Writer Documentation Utility')
- row(3,32) string('(c) 1993 Alan Young')
- row(5,10) string('Takes Report Writer Report Files and Database Files and creates')
- row(6,10) string('a database including a list of:')
- row(8,6) string('Report Name, Report Dos File Name, Data Base Name, Data Base File ' |
- & 'Name')
- row(10,16) string('Please type in path for Report Writer Report Files')
- row(14,14) string('Please type in path for Report Writer Definition files')
- row(23,35) string('Count=')
- row(25,20) string('CTRL-ESC=EXIT')
- col(45) string('CTRL-ENTER=PROCEED')
- row(12,11) entry(@S60),use(reppath),ovr,req,lft,upr
- row(16,11) entry(@S60),use(dbspath),lft,upr
- MESSAGE row(19,19) string(45)
- MESSAGE2 row(21,11) string(60)
- count row(23,41) string(@n07)
- .
-
- ERRWIN SCREEN WINDOW(3,54),AT(23,14),HUE(7,1,0)
- OMIT('**-END-**')
- ╟────────────────────────────────────────────────────╢
- ║■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■║
- ╚════════════════════════════════════════════════════╝
- **-END-**
-
- ROW(1,1) STRING('╟─{52}╢'),ENH
- ROW(2,1) STRING('║<0{52}>║'),ENH
- ROW(3,1) STRING('╚═{52}╝'),ENH
- ERRMESS ROW(2,2) STRING(52),REV,BLK
- .
- CODE
-
- open(SCREEN)
- loop
- UPDATE
- DISPLAY
- ALERT
- ALERT(Accept_Key)
- ALERT(Reject_Key)
- accept
- kc#=keycode()
- if kc# = reject_key then
- close(SCREEN)
- return
- . ! if
- if kc# = accept_key then break.
- . ! loop
- update
-
- if clip(reppath)=''
- beep
- BEEP
- show(25,1,'ERROR - NO REPORT PATH - PRESS A KEY ')
- ask
- return
- .
- if clip(DBSPATH)=''
- beep
- BEEP
- show(25,1,'ERROR - NO REPORT PATH - PRESS A KEY ')
- ask
- return
- .
-
- !******************* READ REPORT FILES****************
-
- SETPATH(REPPATH)
- SCN:MESSAGE='READING REPORTS DIRECTORY'
- DISPLAY
- DO GET_FILES
- TBLRECS=RECORDS(DIRTBL)
- CREATE(REPTFILE)
- ERR#=errorcode()
- IF ERR# <> 0
-
- show(25,1,'ERROR'&FORMAT(ERR#,@n3)&' - UNABLE TO CREATE FILE - PRESS A KEY ')
- ask
- return
- .
- SCN:MESSAGE='COPYING REPORTS LIST TO A FILE'
- DISPLAY
- LOOP COUNTER=1 TO TBLRECS
- scn:count=counter
- display (scn:count)
- GET(DIRTBL,COUNTER)
- IF GRP:PORS <> '<<SUB DIR>' | !IF NOT PRE DIRECTORY
- AND GRP:PORS <> '<<PRE DIR>' | !AND NOT SUB DIRECTRY
- AND TBL:EXT <> '.DAT' |
- AND TBL:EXT <> '.K01' |
- THEN
- RPT:DOS_NAME=UPPER(clip(TBL:NAME)&'.'&clip(TBL:EXT))
- SCN:MESSAGE2=RPT:DOS_NAME
- DISPLAY(RPT:DOS_NAME)
- if clip(rpt:dos_name) <> '\...'
- ADD(REPTFILE)
- .
- .
- .
-
- scn:message='FINISHED READING REPORT FILES'
- scn:message2=''
- DISPLAY
- close(reptfile)
-
- set(reptfile)
- scn:message='GETTING REPORT TITLES'
- DISPLAY
- counter=0
- loop while not eof(reptfile)
- NEXT(reptfile)
- counter+=1
- scn:count=counter
- display(SCN:COUNT)
- DOSFILPATH=CLIP(REPPATH)&'\'&CLIP(RPT:DOS_NAME)
- SET(DOSFILE)
- if errorcode()=0
- NEXT(DOSFILE)
- if errorcode()=0
- REPT_TITLE =UPPER(SUB(DFL:DOS_STRING,001,32))
- DTBS_TITLE =UPPER(SUB(DFL:DOS_STRING,116,32))
- RPT:REPT_TITLE = REPT_TITLE
- RPT:DTBS_TITLE = DTBS_TITLE
- scn:message2=RPT:REPT_TITLE&'|'&RPT:DTBS_TITLE
- DISPLAY(SCN:MESSAGE2)
- PUT(REPTFILE)
- CLOSE(DOSFILE)
- ELSE
- BEEP
- SCN:MESSAGE2='ERROR READING '&DOSFILPATH
- DELETE(REPTFILE) ! REMOVE INVALID ENTRIES
- DISPLAY
- .
- CLOSE(DOSFILE)
- ..
- !*********************************************************
- !now rEAD DATA BASE DEFINITION FILES
- SETPATH(DBSPATH)
- SCN:MESSAGE='READING DATA BASE DEFINITION DIRECTORY ' & DBSPATH
- DISPLAY
- DO GET_FILES
- TBLRECS=RECORDS(DIRTBL)
- CREATE(DTBSFILE)
- ERR#=errorcode()
- IF ERR# <> 0
-
- show(25,1,'ERROR'&FORMAT(ERR#,@n3)&' - UNABLE TO CREATE FILE - PRESS A KEY ')
- ask
- return
- .
- SCN:MESSAGE='COPYING DATA BASE LIST TO A FILE'
- DISPLAY
- LOOP COUNTER=1 TO TBLRECS
- scn:count=counter
- display (scn:count)
- GET(DIRTBL,COUNTER)
- IF GRP:PORS <> '<<SUB DIR>' | !IF NOT PRE DIRECTORY
- AND GRP:PORS <> '<<PRE DIR>' | !AND NOT SUB DIRECTRY
- AND TBL:EXT <> '.DAT' |
- AND TBL:EXT <> '.K01' |
- THEN
- DBS:DOS_NAME=UPPER(clip(TBL:NAME)&'.'&clip(TBL:EXT))
- SCN:MESSAGE2=DBS:DOS_NAME
- DISPLAY(DBS:DOS_NAME)
- if clip(DBS:dos_name) <> '\...'
- ADD(DTBSFILE)
- .
- .
- .
-
- scn:message='FINISHED READING DATA BASE DEFINITION FILES'
- scn:message2=''
- DISPLAY
- close(DTBSfile)
-
- set(DTBSfile)
- scn:message='GETTING DATA BASE TITLES'
- DISPLAY
- counter=0
- loop while not eof(DTBSfile)
- NEXT(DTBSfile)
- counter+=1
- scn:count=counter
- display(SCN:COUNT)
- DOSFILPATH=CLIP(DBSPATH)&'\'&CLIP(DBS:DOS_NAME)
- SET(DOSFILE)
- if errorcode()=0
- NEXT(DOSFILE)
- if errorcode()=0
- DTBS_TITLE =UPPER(SUB(DFL:DOS_STRING,001,32))
- DBS:DTBS_TITLE = DTBS_TITLE
- scn:message2=DBS:DTBS_TITLE
- DISPLAY(SCN:MESSAGE2)
- PUT(DTBSFILE)
- CLOSE(DOSFILE)
- ELSE
- BEEP
- SCN:MESSAGE2='ERROR READING '&DOSFILPATH
- DELETE(DTBSFILE) ! REMOVE INVALID ENTRIES
- DISPLAY
- .
- CLOSE(DOSFILE)
- ..
-
- SCN:MESSAGE2='COMPLETED READING DATABASE TITLES'
- DISPLAY
- ASK
- close(DTBSfile)
- close(screen)
-
- ! SORT FILES
- G_RUNPROC('CSRT I=\RRDOC\RPTSFILE.DAT O=\RRDOC\RPTSFILE.DAT C=N D=N N=N /V')
- G_RUNPROC('CSRT I=\RRDOC\DTBSFILE.DAT O=\RRDOC\DTBSFILE.DAT C=N D=N N=N /V')
- G_RUNPROC('RRUN A=\RRDOC\REPTDOC.ARF')
-
-
- ! R=\RRDOC\REPTDOC.RPT
- ! D=\RRDOC\REPTDOC.DEF
- ! C=\RRDOC\MATRIX.CTL
- ! O="P-LPT1"
- ! T=\RRDOC
-
-
-
- GET_FILES ROUTINE
-
- FREE(DIRTBL) !FREE DIRECTORY TABLE
- DIR" = PATH() !ASSIGN CURRENT PATH
- IF LEN(CLIP(DIR")) <> 3 !IF PATH 3 CHARS 'X:\'
- ROOT" = 'NO' ! RESET ROOT DIRECTORY FLAG
- DIR" = CLIP(DIR") & '\*.*' ! SET PATH TO ALL FILES
- R# = 2 ! SET DIR ENTRY POINTER
- ELSE !OTHERWISE
- ROOT" = 'YES' ! SET ROOT FLAG
- DIR" = CLIP(DIR") & '*.*' ! SET PATH TO ALL FILES
- R# = 1 ! SET DIR ENTRY POINTER
- . !END IF
- SETDIR(DIR",DIRGRP) !SET PATTERN FOR DIRECTORY
- RECS = 0 !CLEAR # RECORDS
- DRECS# = 0 !CLEAR # DIRECTORY RECORDS
- TOTSIZE# = 0 !CLEAR TOTAL SIZE
- counter=0
- LOOP !LOOP THRU DIRECTORY
- counter +=1
- scn:count=counter
- display
- NEXTDIR(DIRGRP) ! GET A DIRECTORY ENTRY
- GRP:PORS = '' ! CLEAR PREVIOUS OR SUB
- IF ERROR() = NO_FILES THEN BREAK. ! END LOOP IF NO MORE FILES
- IF GRP:NAME = '.' THEN CYCLE. ! IF PREVIOUS DIR THEN CYCLE
- RECS += 1 ! INCREMENT RECORD COUNTER
- IF BAND(GRP:ATTRIB,10H) ! IF ENTRY IS PRE OR SUB DIR
- IF GRP:NAME = '..' ! IF PREVIOUS DIRECTORY
- GRP:NAME = '\.. ' ! DISPLAY PREV SYMBOL
- GRP:PORS = '<<PRE DIR>' ! DISPLAY PREVIOUS
- ELSE ! OTHERWISE
- GRP:NAME = '\' & GRP:NAME ! DISPLAY SUBDIRECTORY
- GRP:PORS = '<<SUB DIR>' ! DISPLAY SUB
- . ! END IF
- DRECS# += 1 ! INCREMENT DIRECTORY COUNT
- . ! END IF
- TBL:DIRREC = GRP:DIRREC ! ASSIGN GROUP TO TABLE
- DOT# = INSTRING('.',GRP:NAME,1) !GET DOT POSITION
- IF GRP:PORS <> '<<SUB DIR>' | !IF NOT PRE DIRECTORY
- AND GRP:PORS <> '<<PRE DIR>' | !AND NOT SUB DIRECTRY
- AND DOT# <> 0 !AND FILE HAS AN EXT
- TBL:NAME = SUB(GRP:NAME,1,DOT#-1) ! ASSIGN FILE NAME
- TBL:EXT = SUB(GRP:NAME,INSTRING('.',GRP:NAME)+1,3) ! ASSIGN FILE EXT
- ELSE !OTHERWISE
- TBL:NAME = GRP:NAME ! ASSIGN NAME
- TBL:EXT = '' ! CLEAR EXT
- . !END IF
- SCN:MESSAGE2=TBL:NAME&'.'&TBL:EXT
- display
-
- IF TBL:PORS = '<<SUB DIR>' ! IF A SUBDIRECTORY
- ADD(DIRTBL,R#) ! ADD ENTRY AT BEGINNING
- R# += 1 ! INCREMENT RECORD POSITION
- ELSE
- ADD(DIRTBL) ! ADD TO TABLE
- .
- IF ERROR() ! IF THERE WAS AN ERROR
- DO ERROR_RTN ! DISPLAY ERROR MESSAGE
- . ! END IF
- TOTSIZE# += GRP:FILESIZE ! INCREMENT SIZE COUNTER
- . !END LOOP
-
- IF ~RECS THEN RETURN. !IF NO RECORDS THEN GOTO MENU.
-
- ERROR_RTN ROUTINE
-
- OPEN(ERRWIN) ! OPEN ERROR WINDOW
- BEEP ! BEEP SPEAKER
- ERRMESS = ERROR() & ' - Press any key' ! DISPLAY ERROR MESSAGE
- ERRMESS = CENTER(ERRMESS) ! CENTER ERROR MESSAGE
- ASK ! WAIT FOR A KEYSTROKE
- CLOSE(ERRWIN) ! CLOSE ERROR WINDOW
-
-
- G_RunProc PROCEDURE(DosProg) !Global Run Procedure
- DosProg STRING(150) !Program To Run
-
- Screen2 screen window(25,80),at(1,1),hue(15,1,0)
- .
-
- CODE
- OPEN(Screen2) !Save Current Screen
- show(25,1,center(dosprog,78))
- SetCursor(25,1) !Position Cursor At Bottom
- RUN(clip(DosProg)) !Run Dos Program
- show(25,1,' ')
- CLOSE(Screen2) !Restore Screen
-